In today's world, full color images have replaced simple diagrams, sketches, and black and white images in documents, web pages, and so forth. Full color images are preferred due to the increased amount of information that they can provide, along with their better appearance. However, full color images may be significantly larger in size than the simple diagrams, sketches, and black and white images. Their larger size may make the transmission of documents containing the full color images time consuming and unwieldy.
Therefore, many image compression techniques and algorithms have been developed to reduce the size of full color images. A technique referred to as JPEG image compression uses a lossy data compression algorithm to significantly reduce the size of full color images while retaining good image quality. An advantage of JPEG image compression is that image quality can readily be traded off for reduced image size.
With reference now to FIGS. 1a and 1b, there are shown diagrams illustrating data arrangement of one commonly used form of JPEG image compression and a high-level block diagram of a commonly used JPEG image decoder and viewer 150. The diagram shown in FIG. 1a illustrates the arrangement of data in a JPEG compressed image with a 4:2:2 downsampling factor. Since the human eye can see more detail in the Y component (luma component) of an image than in either the Cb (blue chroma component) and the Cr (red chroma component) components, JPEG encoders may be designed to more effectively compress images by exploiting this. In 4:2:2 downsampling, data along the Cb and Cr components are reduced by a factor of two. Other variations of JPEG compression may be 4:4:4 (no downsampling) and 4:2:0 (downsampling by a factor of two along all components).
The diagram shown in FIG. 1a illustrates data associated with an image arranged into three groups. A first group 105 contains Y component data, a second group 110 contains Cb component data, and a third group 115 contains Cr component data. When compressed, the data of the image is stored in 8×8 blocks so that two consecutive blocks (block 106 and block 107) contain Y component data. The blocks 106 and 107 may then be followed by a single block (block 111) that contains Cb component data. The block 111 may then be followed by another single block (block 116) that contains Cr component data. This ordering is continued for all of the image's data. The processing of the data typically requires the accessing of the data contained in the blocks in the following order: block 106, block 107, block 111, and block 116. This ordered access to the data may continue until all of the data for the image has been accessed.
The JPEG image decoder and viewer 150 shown in FIG. 1b includes a JPEG decoder 155, which may be responsible for implementing a JPEG decoding algorithm required to decode the JPEG compressed image for viewing purposes. The JPEG decoder 155 converts the compressed image file back to an image file of the same size as the original image file. The JPEG image decoder and viewer 150 also includes a memory 160 that can be used to store the JPEG image as well as provide buffer space required during the JPEG decoding and viewing. Also included is a reorder address generator 165 used to reorder and scale the JPEG image's data, a reorder data unit 170 used to reorder the JPEG image's data into an order necessary for display purposes, and a display encoder/controller 175 used to display the reordered JPEG image data on a display, such as a CRT terminal, an LCD display, a television, and so forth.
One disadvantage of the prior art is that the JPEG image decoding and viewing requires a buffer that is on the order of the largest supported image size since the JPEG image decoding takes place prior to displaying the image. For full color images (24 bits of color information per pixel), the buffer may need to be as large as 12.3 gigabytes to support the maximum JPEG supported image size.